iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
1
自我挑戰組

初學者也能實做的環控系統系列 第 5

DAY5 DHT22溫濕度感測器介紹

  • 分享至 

  • xImage
  •  

今天呢我們要來介紹現在常用的溫濕度感測器DHT22,為什麼一開始要先介紹這個感測器呢
因為他容易使用且價格便宜,適合初學者使用
我們先來看看DHT22的圖片

圖中可以看到他只有3個接腳其中
DAT是傳送資料的腳位
VCC是電源的腳位(3.3V~5V)
GND是接地
就會有人問有了這個SENSOR就可以開始接收資料嗎

答案是:不行

在Arduino中 並沒有內建DHT22的函式庫,所以你無法辨識DHT22的回傳資料
所以就要去下載官方的函式庫,有兩種方式可以下載:
第一是去官方下載然後自己匯入函式庫
官方載點:https://www.arduinolibraries.info/libraries/dht-sensor-library
第二是去arduino IDE上面 sketch -> include library -> Manage libraries 搜尋DHT22 然後下載DHT Sensor Library就可以使用他們的函式庫
一開始 你不會使用他們的函式庫,所以要用到DAY2說的範例程式
點開 examples底下可以看到 客製化函式庫的範例程式 點開DHT Sensor Library的DHTtester刪掉一些關於範例的註解

#include "DHT.h"
#define DHTPIN 2     
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println(F("DHTxx test!"));

  dht.begin();
}
void loop() {
  delay(2000);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float f = dht.readTemperature(true);
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }
  float hif = dht.computeHeatIndex(f, h);
  float hic = dht.computeHeatIndex(t, h, false);
  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Heat index: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));
}

將程式燒進arduino裡面

DAT - 2
VCC - 5V
GND - GND
用Serial監視視窗看感測器是否正常

如果正常應該會跑出這個畫面
但測試程式中會有很多我們不需要的像是華氏溫度,所以要修改程式只留我們需要的

#include "DHT.h"
#define DHTPIN 2     
#define DHTTYPE DHT22  
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
}
void loop() {
  delay(1000);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  if (isnan(h) || isnan(t) ) {
    Serial.println(F("感測器讀取失敗"));
    return;
  }
  Serial.print(F("濕度: "));
  Serial.print(h);
  Serial.print(F("% 溫度: "));
  Serial.print(t);
  Serial.println("°C");
}

這樣輸出就會變成

這樣大家就做好一個自己的溫濕度感測器的讀取程式了
DAY6 會繼續介紹DHT22感測器與使用讀取到的資料做控制


上一篇
DAY4 使用Serial接收訊息
下一篇
DAY6 DHT22感測器控制LED
系列文
初學者也能實做的環控系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言